#define D2D_INPUT_COUNT 2
//声明第n个输入使用简单采样，如果未定义，则第Nge输入默认未 complex。定义此项是可选的。
#define D2D_INPUT0_SIMPLE
#define D2D_INPUT1_SIMPLE

#include <d2d1effecthelpers.hlsli>

float threshold;
float4 startColor;
float4 endColor;

D2D_PS_ENTRY(main) {
	
	//获取原图的当前像素的颜色
	float4 sColor = D2DGetInput(0);

	//获取当前像素在屏幕上的坐标（相对位置）
	float2 pos = D2DGetInputCoordinate(0).xy;

	//按百分比进行采样 获取噪点图当前点的像素颜色
	float3 tColor	=D2DSampleInput(1,pos).rgb;

	float average = (tColor.r + tColor.g + tColor.b) / 3;

	if (sColor.a == 0|| threshold == 0) {
		return sColor;
	}
	
	//判断灰度是否小于临界点，如果小于则返回透明，不小于则返回当前颜色
	if (average < threshold) {
		return float4(0, 0, 0, 0);
	}
	else {

		float t = 1 -smoothstep(0,0.01, average - threshold);
		if (average == 1) {
			t = 0;
		}


		float r = startColor.r+(endColor.r - startColor.r) * t;
		float g = startColor.g+(endColor.g - startColor.g) * t;
		float b = startColor.b+(endColor.b - startColor.b) * t;
		float a = startColor.a+(endColor.a - startColor.a) * t;
		float4 dColor = float4(r, g, b, a);
		//float4 dColor = lerpcolor(startColor, endColor, t);
		
		float t1 = t * step(0.0001, threshold);

		r = sColor.r+(dColor.r - sColor.r) * t;
		g = sColor.g+(dColor.g - sColor.g) * t;
		b = sColor.b+(dColor.b - sColor.b) * t;
		a = sColor.a+(dColor.a - sColor.a) * t;

		//float4 finalColor = lerpcolor(sColor, dColor, t * Stemp(0.0001, threshold));
		float4 finalColor=float4(r, g, b, a);

		return finalColor;
	}

}

